Mac 安裝 NVM


Posted by SimonAllen on 2020-05-29

很久沒在 Mac 裝 NVM 了,這裡也順便重新整理之前的筆記。

平常在開發前端時,基於 Node.js 生態圈龐大,不同套件有不同版本的限制,例如某些新功能限定某版號以後才有,不同前後端專案可能所需 Node.js 版本也不同,總不可能每次都乖乖升級降級吧!

我們需要一個工具幫我們管理 Node.js 版本,這時候我們就可以透過 nvm 來管理、切換 Node.js。

先檢查目前電腦有沒有安裝 Node.js ,有的話記得先移除掉,之後在 terminal 終端機輸入

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

擇一即可

檢查是否安裝成功

安裝後在 terminal 終端機輸入

nvm --version

這時應該會發現找不到 nvm,這是正常的,理由是我們還沒設定對應的環境變數。

設定環境變數

接著要按照你 terminal shell 是 bash 或是 zsh 在以下 ~/.bash_profile~/.zshrc~/.profile~/.bashrc 其中一個做對應設定。

通常 bash 對應 .bash_profile.bashrc 檔案,zsh 對應 .zshrc 檔案。

要知道自己是 bash 或 zsh 最簡單方式就是打開 terminal 看看視窗上面寫什麼:

到你的 user 資料夾根目錄,例如我電腦叫 Simon,就到我的 folder,Simon 這層 user 資料夾,通常這層資料夾對應你打開 terminal 終端機根層級,我們要在裡頭檢查是否有 .bash_profile.zshrc.profile.bashrc 的存在。

Mac 可以在 folder 資料夾輸入快捷鍵 command + shift + . 顯示隱藏的檔案,若有上述檔案其中一個檔案就用任一編輯器 (VScode、Sumblime) 之類的打開,若沒有就自己新建一個,在裡頭最後面加入以下內容並存檔

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

完成後打開終端機,按照你剛剛修改的檔案,例如你是 bash 改的是 .bash_profile 那就在終端機輸入

source ~/.bash_profile

如果你改的是 .bashrc 那就在終端機輸入

source ~/.bashrc

如果你 shell 是 zsh 改的是 .zshrc 就在終端機輸入

source ~/.zshrc

這個步驟就是重新啟動我們修改的檔案,讓 shell 運作上面加入的 export NVM_DIR=..... 這段環境變數設定。

若是上網搜尋文章,這步驟教學大多是用終端機指令包含用 vi 加入 export NVM_DIR=..... 這段,但我個人不是很喜歡連修改檔案內容這步驟還在 terminal 終端機上用 vi 完成。

總之到這邊應該就完成了,在 terminal 終端機輸入

nvm --version

應該就能看到對應版號。

nvm 安裝 node.js

查看此台電腦安裝資訊

nvm ls

查看有哪些 Node.js 版號可以安裝

$ nvm ls-remote

安裝指定 Node.js 版號

nvm install ${版本號碼}

例如:

nvm install 12.13

切換指定 Node.js 版號

nvm use ${版本號碼}

例如:

nvm use 12.13

設定此台電腦預設的 Node.js 版號

nvm alias default ${版本號碼}

例如:

nvm alias default 12.13

記得先 nvm install 安裝該版本到電腦後才用 nvm usenvm alias default 做後續設定

參考

NVM Github 有很詳盡說明..
https://github.com/nvm-sh/nvm


#node.js #NVM #開發環境









Related Posts

Inside look at modern web browser

Inside look at modern web browser

Some relative page about the "dependent types"

Some relative page about the "dependent types"

結構命名

結構命名


Comments